﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Lesk;
using System.Diagnostics;

namespace Infinity.ExpressionParser.Tokens
{
	public class BracketToken : Token
	{
		public string Bracket { get; set; }
	}

	[DebuggerDisplay("Open bracket: {Value}")]
	public class OpenBracketToken : BracketToken { }

	[DebuggerDisplay("Close bracket: {Value}")]
	public class CloseBracketToken : BracketToken { }

	/// <summary>
	/// Nyitó zárójel token
	/// </summary>
	public class OpenRegularBracketToken : OpenBracketToken
	{
		public OpenRegularBracketToken()
		{
			Bracket = "(";
		}
	}

	/// <summary>
	/// Csukó zárójel token
	/// </summary>
	public class CloseRegularBracketToken : CloseBracketToken
	{
		public CloseRegularBracketToken()
		{
			Bracket = ")";
		}
	}

	[DebuggerDisplay("Open indexer bracket: {Value}")]
	public class OpenIndexerBracketToken : OpenBracketToken
	{
		public OpenIndexerBracketToken()
		{
			Bracket = "[";
		}
	}

	[DebuggerDisplay("Close indexer bracket: {Value}")]
	public class CloseIndexerBracketToken : CloseBracketToken
	{
		public CloseIndexerBracketToken()
		{
			Bracket = "]";
		}
	}

	[DebuggerDisplay("Open set bracket: {Value}")]
	public class OpenSetBracketToken : OpenBracketToken
	{
		public OpenSetBracketToken()
		{
			Bracket = "{";
		}
	}

	[DebuggerDisplay("Close indexer bracket: {Value}")]
	public class CloseSetBracketToken : CloseBracketToken
	{
		public CloseSetBracketToken()
		{
			Bracket = "}";
		}
	}
}
